/**
 *
 * @param standard 合格标准
 * @returns 合格标准规则是否正确（是否是有用的合格标准）
 */
export function checkIsStandard(standard: string): StandardUnit {
  const reg = /-|(<=)|(≤)|(>=)|(≥)/
  const match = standard.match(reg)

  return match ? (match[0] as StandardUnit) : undefined
}

/**
 *
 * @param standard 合格标准
 * @desc 返回分割后的合格标准最大值和最小值
 * @returns { value: string[], unit: string, cnUnit:string }
 *
 */
export function splitStandard(standard?: string): {
  value: string[]
  unit: StandardUnit
  cnUnit: string
} {
  if (!standard) return {value: [''], unit: undefined, cnUnit: ''}

  const unit = checkIsStandard(standard) //检测是否是合格的合格标准数据

  if (!unit) return {value: [standard], unit: undefined, cnUnit: ''}

  const value = standard.split(unit).filter(item => item) //分割标准为数组

  const cnUnit = standardUnitCnMap(unit) //获取符号中文

  return {value, unit, cnUnit} //
}

/**
 * 拼接合格标准
 * @param data.standardValue 合格标准范围
 * @param data.standardUnit 合格标准区间标识
 * @returns
 */
export function joinStandard(data: {standardValue?: string[]; standardUnit?: StandardUnit}): string {
  let standard = ''
  switch (data.standardUnit) {
    case '-':
      standard =
        (data.standardValue?.[0] || '') + data.standardUnit + (data.standardValue?.[1] || '')
      break
    case '<=':
    case '≥':
    case '>=':
    case '≤':
      standard = data.standardUnit + (data.standardValue?.[0] || '')
      break
    default:
      standard = ''
      break
  }
  return standard
}

/**
 * 合格标准区间标识转换
 * @param unit 合格标准区间标识
 * @returns 转换后的字符
 */
export function standardUnitMap(unit?: StandardUnit): StandardUnit {
  switch (unit) {
    case '≤':
      return '<='
    case '≥':
      return '>='
    default:
      return unit
  }
}

/**
 * 合格标准区间标识转换为中文
 * @param unit 默认有<= >= -
 * @returns 合格标准区间标识的中文解释
 */
export function standardUnitCnMap(unit: string) {
  switch (unit) {
    case '<=':
      return '小于等于'
    case '>=':
      return '大于等于'
    case '-':
      return '两者之间'
    default:
      return unit
  }
}
